home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / warnings.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  7KB  |  272 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. '''Python part of the warnings subsystem.'''
  5. import sys
  6. import types
  7. import linecache
  8. __all__ = [
  9.     'warn',
  10.     'showwarning',
  11.     'formatwarning',
  12.     'filterwarnings',
  13.     'resetwarnings']
  14. filters = []
  15. defaultaction = 'default'
  16. onceregistry = { }
  17.  
  18. def warn(message, category = None, stacklevel = 1):
  19.     '''Issue a warning, or maybe ignore it or raise an exception.'''
  20.     if isinstance(message, Warning):
  21.         category = message.__class__
  22.     
  23.     if category is None:
  24.         category = UserWarning
  25.     
  26.     
  27.     try:
  28.         caller = sys._getframe(stacklevel)
  29.     except ValueError:
  30.         globals = sys.__dict__
  31.         lineno = 1
  32.  
  33.     globals = caller.f_globals
  34.     lineno = caller.f_lineno
  35.     if '__name__' in globals:
  36.         module = globals['__name__']
  37.     else:
  38.         module = '<string>'
  39.     filename = globals.get('__file__')
  40.     None if filename else None<EXCEPTION MATCH>AttributeError
  41.     if not filename:
  42.         filename = module
  43.     
  44.     registry = globals.setdefault('__warningregistry__', { })
  45.     warn_explicit(message, category, filename, lineno, module, registry)
  46.  
  47.  
  48. def warn_explicit(message, category, filename, lineno, module = None, registry = None):
  49.     if module is None:
  50.         module = filename
  51.         if module[-3:].lower() == '.py':
  52.             module = module[:-3]
  53.         
  54.     
  55.     if registry is None:
  56.         registry = { }
  57.     
  58.     if isinstance(message, Warning):
  59.         text = str(message)
  60.         category = message.__class__
  61.     else:
  62.         text = message
  63.         message = category(message)
  64.     key = (text, category, lineno)
  65.     if registry.get(key):
  66.         return None
  67.     
  68.     for item in filters:
  69.         (action, msg, cat, mod, ln) = item
  70.         if (msg is None or msg.match(text)) and issubclass(category, cat):
  71.             if mod is None or mod.match(module):
  72.                 if ln == 0 or lineno == ln:
  73.                     break
  74.                     continue
  75.     else:
  76.         action = defaultaction
  77.     if action == 'ignore':
  78.         registry[key] = 1
  79.         return None
  80.     
  81.     if action == 'error':
  82.         raise message
  83.     
  84.     if action == 'once':
  85.         registry[key] = 1
  86.         oncekey = (text, category)
  87.         if onceregistry.get(oncekey):
  88.             return None
  89.         
  90.         onceregistry[oncekey] = 1
  91.     elif action == 'always':
  92.         pass
  93.     elif action == 'module':
  94.         registry[key] = 1
  95.         altkey = (text, category, 0)
  96.         if registry.get(altkey):
  97.             return None
  98.         
  99.         registry[altkey] = 1
  100.     elif action == 'default':
  101.         registry[key] = 1
  102.     else:
  103.         raise RuntimeError('Unrecognized action (%r) in warnings.filters:\n %s' % (action, item))
  104.     showwarning(message, category, filename, lineno)
  105.  
  106.  
  107. def showwarning(message, category, filename, lineno, file = None):
  108.     '''Hook to write a warning to a file; replace if you like.'''
  109.     if file is None:
  110.         file = sys.stderr
  111.     
  112.     
  113.     try:
  114.         file.write(formatwarning(message, category, filename, lineno))
  115.     except IOError:
  116.         pass
  117.  
  118.  
  119.  
  120. def formatwarning(message, category, filename, lineno):
  121.     '''Function to format a warning the standard way.'''
  122.     s = '%s:%s: %s: %s\n' % (filename, lineno, category.__name__, message)
  123.     line = linecache.getline(filename, lineno).strip()
  124.     if line:
  125.         s = s + '  ' + line + '\n'
  126.     
  127.     return s
  128.  
  129.  
  130. def filterwarnings(action, message = '', category = Warning, module = '', lineno = 0, append = 0):
  131.     '''Insert an entry into the list of warnings filters (at the front).
  132.  
  133.     Use assertions to check that all arguments have the right type.'''
  134.     import re as re
  135.     item = (action, re.compile(message, re.I), category, re.compile(module), lineno)
  136.     if append:
  137.         filters.append(item)
  138.     else:
  139.         filters.insert(0, item)
  140.  
  141.  
  142. def simplefilter(action, category = Warning, lineno = 0, append = 0):
  143.     '''Insert a simple entry into the list of warnings filters (at the front).
  144.  
  145.     A simple filter matches all modules and messages.
  146.     '''
  147.     item = (action, None, category, None, lineno)
  148.     if append:
  149.         filters.append(item)
  150.     else:
  151.         filters.insert(0, item)
  152.  
  153.  
  154. def resetwarnings():
  155.     '''Clear the list of warning filters, so that no filters are active.'''
  156.     filters[:] = []
  157.  
  158.  
  159. class _OptionError(Exception):
  160.     '''Exception used by option processing helpers.'''
  161.     pass
  162.  
  163.  
  164. def _processoptions(args):
  165.     for arg in args:
  166.         
  167.         try:
  168.             _setoption(arg)
  169.         continue
  170.         except _OptionError:
  171.             msg = None
  172.             print >>sys.stderr, 'Invalid -W option ignored:', msg
  173.             continue
  174.         
  175.  
  176.     
  177.  
  178.  
  179. def _setoption(arg):
  180.     import re
  181.     parts = arg.split(':')
  182.     if len(parts) > 5:
  183.         raise _OptionError('too many fields (max 5): %r' % (arg,))
  184.     
  185.     while len(parts) < 5:
  186.         parts.append('')
  187.     (action, message, category, module, lineno) = [ s.strip() for s in parts ]
  188.     action = _getaction(action)
  189.     message = re.escape(message)
  190.     category = _getcategory(category)
  191.     module = re.escape(module)
  192.     if lineno:
  193.         
  194.         try:
  195.             lineno = int(lineno)
  196.             if lineno < 0:
  197.                 raise ValueError
  198.         except (ValueError, OverflowError):
  199.             None if module else []
  200.             None if module else []
  201.             raise _OptionError('invalid lineno %r' % (lineno,))
  202.         except:
  203.             None if module else []<EXCEPTION MATCH>(ValueError, OverflowError)
  204.         
  205.  
  206.     None if module else []
  207.     lineno = 0
  208.     filterwarnings(action, message, category, module, lineno)
  209.  
  210.  
  211. def _getaction(action):
  212.     if not action:
  213.         return 'default'
  214.     
  215.     if action == 'all':
  216.         return 'always'
  217.     
  218.     for a in [
  219.         'default',
  220.         'always',
  221.         'ignore',
  222.         'module',
  223.         'once',
  224.         'error']:
  225.         if a.startswith(action):
  226.             return a
  227.             continue
  228.     
  229.     raise _OptionError('invalid action: %r' % (action,))
  230.  
  231.  
  232. def _getcategory(category):
  233.     import re
  234.     if not category:
  235.         return Warning
  236.     
  237.     if re.match('^[a-zA-Z0-9_]+$', category):
  238.         
  239.         try:
  240.             cat = eval(category)
  241.         except NameError:
  242.             raise _OptionError('unknown warning category: %r' % (category,))
  243.         except:
  244.             None<EXCEPTION MATCH>NameError
  245.         
  246.  
  247.     None<EXCEPTION MATCH>NameError
  248.     i = category.rfind('.')
  249.     module = category[:i]
  250.     klass = category[i + 1:]
  251.     
  252.     try:
  253.         m = __import__(module, None, None, [
  254.             klass])
  255.     except ImportError:
  256.         raise _OptionError('invalid module name: %r' % (module,))
  257.  
  258.     
  259.     try:
  260.         cat = getattr(m, klass)
  261.     except AttributeError:
  262.         raise _OptionError('unknown warning category: %r' % (category,))
  263.  
  264.     if not isinstance(cat, types.ClassType) or not issubclass(cat, Warning):
  265.         raise _OptionError('invalid warning category: %r' % (category,))
  266.     
  267.     return cat
  268.  
  269. _processoptions(sys.warnoptions)
  270. simplefilter('ignore', category = OverflowWarning, append = 1)
  271. simplefilter('ignore', category = PendingDeprecationWarning, append = 1)
  272.